iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Mobile Development

Android與Spring Boot開發學習之旅系列 第 25

開發學習之旅 Day25 - 在Spring Boot中整合FCM

  • 分享至 

  • xImage
  •  

通過在Spring Boot中集成FCM,實現通知的發送和管理。我們將建立一個Spring Boot程序,配置Firebase Admin SDK,設置FCM服務,並建立API端點推送通知。

建立 FcmRequest

用於表示 Firebase Cloud Messaging 的請求。

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
public class FcmRequest {
    private String fcm_token;
    private String title;
    private String body;

    public String getFcm_token() {
        return fcm_token;
    }

    public void setFcm_token(String fcm_token) {
        this.fcm_token = fcm_token;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }
}

建立 FcmService

負責處理Firebase Cloud Messaging(FCM)通知的發送。
使用 Firebase Messaging構建一個包含標題與內容的消息並發送到指定的設備token。

@Service
public class FcmService {
    public void sendNotification(String token, String title, String body) {
        // 設定 Firebase Messaging
        FirebaseMessaging messaging = FirebaseMessaging.getInstance();
        Message message = Message.builder()
                .putData("title", title)
                .putData("body", body)
                .setToken(token)
                .build();
        try {
            // 發送通知
            messaging.send(message);
        } catch (FirebaseMessagingException e) {
            e.printStackTrace();
        }
    }
}

這邊的token指的是用戶端的設備token,並非使用者身分token。

建立 FcmController

用於處理與 Firebase Cloud Messaging(FCM)相關的 HTTP 請求。

@RestController
@RequiredArgsConstructor
@RequestMapping("/fcm")
public class FcmController {
    private final FcmService service;

    @PostMapping("/send")
    public void sendNotification(@RequestBody FcmRequest request) {
        // 發送通知
        service.sendNotification(request.getFcm_token(), request.getTitle(), request.getBody());
    }
}

建立 FcmConfiguration

使用Firebase Admin SDK的私密金鑰來建立連接。
(請先將私密金鑰json檔放置專案最外圍的目錄下)

@Configuration
public class FcmConfiguration {
    @Bean
    public FirebaseApp initializeFirebaseApp() {
        try {
            // 載入Firebase Admin SDK(json請依照添加的"私密金鑰.json"加入)
            FirebaseOptions options = FirebaseOptions.builder()
                    .setCredentials(GoogleCredentials.fromStream(new FileSystemResource("itdemo-************************.json").getInputStream()))
                    .build();

            // 初始化Firebase App
            FirebaseApp firebaseApp = FirebaseApp.initializeApp(options);
            return firebaseApp;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
}

上一篇
開發學習之旅 Day24 - Google FCM簡介
下一篇
開發學習之旅 Day26 - 在Android中整合FCM
系列文
Android與Spring Boot開發學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言